/*
 * meituan.com Inc.
 * Copyright (c) 2010-2018 All Rights Reserved.
 */
package practice.v2;

import org.junit.Test;

import java.util.Arrays;
import java.util.Random;

/**
 * <p>
 *
 * </p>
 * @author LvJing
 * @version $Id:SelectSort.java v1.0 2018/8/15 上午11:56 LvJing Exp $
 */
public class SelectSort {

    /**
     * 简单选择排序：属于选择排序类型，即第一趟选择出最大的数，放在最后面，第二趟选择第二大的数。。。与冒泡排序的区别是，在找到最大的数时不会
     * 进行数的交换，只是找到最大数的角标，交换到最后。
     */
    public void selectSort(int[] arr) {
        if (arr == null || arr.length == 0 || arr.length == 1)
            return;

        for (int i = 0; i < arr.length - 1; i++) {
            int biggerPos = 0;
            for (int j = 0; j < arr.length - i; j++) {
                if (arr[biggerPos] < arr[j])
                    biggerPos = j;
            }
            swap(arr, biggerPos, arr.length - 1 - i);
        }
    }

    private void swap(int[] arr, int i, int j) {
        int temp = arr[i];
        arr[i] = arr[j];
        arr[j] = temp;
    }

    @Test
    public void test01() {
        Random random = new Random();
        int[] arr = new int[10];
        for (int i = 0; i < arr.length; i++)
            arr[i] = random.nextInt(100);
        System.out.println(Arrays.toString(arr));
        selectSort(arr);
        System.out.println(Arrays.toString(arr));
    }
}
